{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 第二题：决策树处理回归任务"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "实验内容\n",
    "1.\t使用sklearn.tree.DecisionTreeRegressor完成kaggle房价预测问题\n",
    "2.\t计算最大深度为10的决策树，训练集上十折交叉验证的MAE和RMSE\n",
    "3.\t绘制最大深度从1到30，决策树在训练集和测试集上MAE的变化曲线\n",
    "4.  选择一个合理的树的最大深度，并给出理由"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1. 读取数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "data = pd.read_csv('data/kaggle_house_price_prediction/kaggle_hourse_price_train.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 丢弃有缺失值的特征（列）\n",
    "data.dropna(axis = 1, inplace = True)\n",
    "\n",
    "# 只保留整数的特征\n",
    "data = data[[col for col in data.dtypes.index if data.dtypes[col] == 'int64']]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Id</th>\n",
       "      <th>MSSubClass</th>\n",
       "      <th>LotArea</th>\n",
       "      <th>OverallQual</th>\n",
       "      <th>OverallCond</th>\n",
       "      <th>YearBuilt</th>\n",
       "      <th>YearRemodAdd</th>\n",
       "      <th>BsmtFinSF1</th>\n",
       "      <th>BsmtFinSF2</th>\n",
       "      <th>BsmtUnfSF</th>\n",
       "      <th>...</th>\n",
       "      <th>WoodDeckSF</th>\n",
       "      <th>OpenPorchSF</th>\n",
       "      <th>EnclosedPorch</th>\n",
       "      <th>3SsnPorch</th>\n",
       "      <th>ScreenPorch</th>\n",
       "      <th>PoolArea</th>\n",
       "      <th>MiscVal</th>\n",
       "      <th>MoSold</th>\n",
       "      <th>YrSold</th>\n",
       "      <th>SalePrice</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>60</td>\n",
       "      <td>8450</td>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "      <td>2003</td>\n",
       "      <td>2003</td>\n",
       "      <td>706</td>\n",
       "      <td>0</td>\n",
       "      <td>150</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>61</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>2008</td>\n",
       "      <td>208500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>20</td>\n",
       "      <td>9600</td>\n",
       "      <td>6</td>\n",
       "      <td>8</td>\n",
       "      <td>1976</td>\n",
       "      <td>1976</td>\n",
       "      <td>978</td>\n",
       "      <td>0</td>\n",
       "      <td>284</td>\n",
       "      <td>...</td>\n",
       "      <td>298</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>5</td>\n",
       "      <td>2007</td>\n",
       "      <td>181500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>60</td>\n",
       "      <td>11250</td>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "      <td>2001</td>\n",
       "      <td>2002</td>\n",
       "      <td>486</td>\n",
       "      <td>0</td>\n",
       "      <td>434</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>42</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>9</td>\n",
       "      <td>2008</td>\n",
       "      <td>223500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>70</td>\n",
       "      <td>9550</td>\n",
       "      <td>7</td>\n",
       "      <td>5</td>\n",
       "      <td>1915</td>\n",
       "      <td>1970</td>\n",
       "      <td>216</td>\n",
       "      <td>0</td>\n",
       "      <td>540</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>35</td>\n",
       "      <td>272</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>2006</td>\n",
       "      <td>140000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>60</td>\n",
       "      <td>14260</td>\n",
       "      <td>8</td>\n",
       "      <td>5</td>\n",
       "      <td>2000</td>\n",
       "      <td>2000</td>\n",
       "      <td>655</td>\n",
       "      <td>0</td>\n",
       "      <td>490</td>\n",
       "      <td>...</td>\n",
       "      <td>192</td>\n",
       "      <td>84</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>12</td>\n",
       "      <td>2008</td>\n",
       "      <td>250000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 35 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   Id  MSSubClass  LotArea  OverallQual  OverallCond  YearBuilt  YearRemodAdd  \\\n",
       "0   1          60     8450            7            5       2003          2003   \n",
       "1   2          20     9600            6            8       1976          1976   \n",
       "2   3          60    11250            7            5       2001          2002   \n",
       "3   4          70     9550            7            5       1915          1970   \n",
       "4   5          60    14260            8            5       2000          2000   \n",
       "\n",
       "   BsmtFinSF1  BsmtFinSF2  BsmtUnfSF  ...  WoodDeckSF  OpenPorchSF  \\\n",
       "0         706           0        150  ...           0           61   \n",
       "1         978           0        284  ...         298            0   \n",
       "2         486           0        434  ...           0           42   \n",
       "3         216           0        540  ...           0           35   \n",
       "4         655           0        490  ...         192           84   \n",
       "\n",
       "   EnclosedPorch  3SsnPorch  ScreenPorch  PoolArea  MiscVal  MoSold  YrSold  \\\n",
       "0              0          0            0         0        0       2    2008   \n",
       "1              0          0            0         0        0       5    2007   \n",
       "2              0          0            0         0        0       9    2008   \n",
       "3            272          0            0         0        0       2    2006   \n",
       "4              0          0            0         0        0      12    2008   \n",
       "\n",
       "   SalePrice  \n",
       "0     208500  \n",
       "1     181500  \n",
       "2     223500  \n",
       "3     140000  \n",
       "4     250000  \n",
       "\n",
       "[5 rows x 35 columns]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2. 数据集划分"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "70%做训练集，30%做测试集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.utils import shuffle"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "data_shuffled = shuffle(data, random_state = 32)\n",
    "split_line = int(len(data_shuffled) * 0.7)\n",
    "training_data = data_shuffled[:split_line]\n",
    "testing_data = data_shuffled[split_line:]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3. 导入模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import cross_val_predict\n",
    "from sklearn.metrics import mean_absolute_error\n",
    "from sklearn.metrics import mean_squared_error"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.tree import DecisionTreeRegressor"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4. 选取特征和标记"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "features = data.columns.tolist()\n",
    "target = 'SalePrice'\n",
    "features.remove(target)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5. 训练与预测"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "请你在下面计算树的最大深度为10时，使用训练集全量特征训练的决策树的十折交叉验证的MAE和RMSE  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "27568.856625815053\n",
      "44633.99894104175\n"
     ]
    }
   ],
   "source": [
    "# YOUR CODE HERE\n",
    "model = DecisionTreeRegressor(max_depth = 10)\n",
    "x = training_data[features]\n",
    "y = training_data[target]\n",
    "\n",
    "prediction = cross_val_predict(model,x,y,cv = 10)\n",
    "\n",
    "mae = mean_absolute_error(prediction, y)\n",
    "rmse = mean_squared_error(prediction, y) ** 0.5\n",
    "\n",
    "print(mae)\n",
    "print(rmse)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "###### 双击此处编辑\n",
    "最大深度为10，全量特征的决策树，十折交叉验证指标\n",
    "\n",
    "MAE|RMSE\n",
    "-|-\n",
    "27568.856625815053|44633.99894104175"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 6. 改变最大深度，绘制决策树的精度变换图"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "绘制最大深度从1到30，决策树训练集和测试集MAE的变化图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "plt.style.use(\"fivethirtyeight\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x1c77a375940>"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nIiIiIgDA/wPUMr0yL/He5QAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 720x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# YOUR CODE HERE\n",
    "train_result = []\n",
    "test_result = []\n",
    "\n",
    "for i in range(30):\n",
    "    model = DecisionTreeRegressor(max_depth = i + 1)\n",
    "    model.fit(training_data[features],training_data[target])\n",
    "    prediction1 = model.predict(training_data[features])\n",
    "    prediction2 = model.predict(testing_data[features])\n",
    "    train_result.append(mean_absolute_error(prediction1, training_data[target]))\n",
    "    test_result.append(mean_absolute_error(prediction2, testing_data[target]))\n",
    "\n",
    "depth = np.linspace(1,30,30)\n",
    "\n",
    "plt.figure(figsize = (10, 5))\n",
    "plt.plot(depth,train_result, '-', label = 'training data')\n",
    "plt.plot(depth,test_result, '-', label = 'testing data')\n",
    "plt.xlabel(\"max_depth\")\n",
    "plt.ylabel('MAE')\n",
    "plt.title(\"DecisionTreeRegressor\")\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "请你选择一个合理的树的最大深度，并给出理由\n",
    "###### 双击此处编辑\n",
    "\n",
    "我认为合理的深度为10。在训练集中，随着最大深度的增大,mae值变小,模型在训练集上的预测效果越来越好,但模型在训练集上表现的过好会导致模型的过拟合,所以在测试集上随着最大深度的增大,mae值趋势是变大的,说明从深度10开始模型出现了过拟合的情况,所以选择最大深度为10。\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
